åœã¬ã€ãã§JavaScriptã®äŸå€ç®¡çããã¹ã¿ãŒããŸãããã广çãªãšã©ãŒãã³ããªã³ã°æŠç¥ããã¹ããã©ã¯ãã£ã¹ãé«åºŠãªæè¡ãåŠã³ãäžçäžã§éçšããå ç¢ãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããŸãã
JavaScriptã®ãšã©ãŒãã³ããªã³ã°ïŒã°ããŒãã«éçºè ã®ããã®äŸå€ç®¡çæŠç¥ãã¹ã¿ãŒè¬åº§
ãœãããŠã§ã¢éçºã®ãã€ãããã¯ãªäžçã«ãããŠãå ç¢ãªãšã©ãŒãã³ããªã³ã°ã¯åãªããã¹ããã©ã¯ãã£ã¹ã§ã¯ãããŸãããããã¯ãä¿¡é Œæ§ãé«ããŠãŒã¶ãŒãã¬ã³ããªãŒãªã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®åºæ¬çãªæ±ã§ãã倿§ãªç°å¢ããããã¯ãŒã¯ç¶æ³ããŠãŒã¶ãŒã®æåŸ ã亀é¯ããã°ããŒãã«ãªèŠæš¡ã§æŽ»åããéçºè ã«ãšã£ãŠãJavaScriptã®ãšã©ãŒãã³ããªã³ã°ãç¿åŸããããšã¯ããã«éèŠã«ãªããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ã广çãªäŸå€ç®¡çæŠç¥ãæãäžããäžçäžã§å®ç§ã«åäœããå埩åã®ããJavaScriptã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããåãäžããŸãã
JavaScriptãšã©ãŒã®å šäœåãçè§£ãã
ãšã©ãŒã广çã«ç®¡çããåã«ããŸããã®æ§è³ªãçè§£ããå¿ èŠããããŸããJavaScriptã¯ãä»ã®ããã°ã©ãã³ã°èšèªãšåæ§ã«ãããŸããŸãªçš®é¡ã®ãšã©ãŒã«ééããå¯èœæ§ããããŸãããããã¯å€§ãŸãã«æ¬¡ã®ããã«åé¡ã§ããŸãã
- æ§æãšã©ãŒïŒã³ãŒããJavaScriptã®ææ³èŠåã«éåããå Žåã«çºçããŸããJavaScriptãšã³ãžã³ã¯éåžžãå®è¡åã®è§£æãã§ãŒãºã§ãããããã£ããããŸããäŸãã°ãã»ãã³ãã³ã®æ¬ èœãæ¬åŒ§ã®äžäžèŽãªã©ã§ãã
- å®è¡æãšã©ãŒïŒäŸå€ïŒïŒã¹ã¯ãªããã®å®è¡äžã«çºçãããšã©ãŒã§ãããããã¯ãã°ãã°è«ççãªæ¬ é¥ãäžæ£ãªããŒã¿ããŸãã¯äºæãã¬ç°å¢èŠå ã«ãã£ãŠåŒãèµ·ããããŸããããããç§ãã¡ã®äŸå€ç®¡çæŠç¥ã®äž»ãªçŠç¹ãšãªããŸããäŸãšããŠã¯ãæªå®çŸ©ãªããžã§ã¯ãã®ããããã£ãžã®ã¢ã¯ã»ã¹è©Šè¡ããŒãé€ç®ããããã¯ãŒã¯ãªã¯ãšã¹ãã®å€±æãªã©ãæããããŸãã
- è«çãšã©ãŒïŒåŸæ¥ã®æå³ã§ã®äŸå€ã§ã¯ãããŸããããè«çãšã©ãŒã¯èª€ã£ãåºåãæ¯ãèãã«ã€ãªãããŸããã³ãŒãèªäœã¯ã¯ã©ãã·ã¥ããŸãããããã®çµæã«æ¬ é¥ãããããããããã°ãæãå°é£ãªå ŽåããããŸãã
JavaScriptãšã©ãŒãã³ããªã³ã°ã®åºç€ïŒtry...catch
try...catchã¹ããŒãã¡ã³ãã¯ãJavaScriptã§å®è¡æãšã©ãŒïŒäŸå€ïŒãåŠçããããã®åºæ¬çãªã¡ã«ããºã ã§ãããšã©ãŒãã¹ããŒããå¯èœæ§ã®ããã³ãŒããåé¢ãããšã©ãŒãçºçãããšãã«å®è¡ããæå®ããããããã¯ãæäŸããããšã§ãæœåšçãªãšã©ãŒãåªé
ã«ç®¡çããããšãã§ããŸãã
tryãããã¯
ãšã©ãŒãã¹ããŒããå¯èœæ§ã®ããã³ãŒãã¯tryãããã¯å
ã«é
眮ãããŸãããã®ãããã¯å
ã§ãšã©ãŒãçºçãããšãJavaScriptã¯å³åº§ã«tryãããã¯ã®æ®ãã®å®è¡ã忢ããå¶åŸ¡ãcatchãããã¯ã«ç§»ããŸãã
try {
// Code that might throw an error
let result = someFunctionThatMightFail();
console.log(result);
} catch (error) {
// Handle the error
}
catchãããã¯
catchãããã¯ã¯ãåŒæ°ãšããŠãšã©ãŒãªããžã§ã¯ããåãåããŸãããã®ãªããžã§ã¯ãã«ã¯éåžžããšã©ãŒã®ååãã¡ãã»ãŒãžããããŠæã«ã¯ã¹ã¿ãã¯ãã¬ãŒã¹ãªã©ããããã°ã«éåžžã«åœ¹ç«ã€æ
å ±ãå«ãŸããŠããŸãããã®åŸããšã©ãŒãã©ã®ããã«åŠçãããïŒãã°ã«èšé²ããããŠãŒã¶ãŒãã¬ã³ããªãŒãªã¡ãã»ãŒãžã衚瀺ããããŸãã¯å埩æŠç¥ã詊ã¿ããªã©ïŒã決å®ã§ããŸãã
try {
let user = undefinedUser;
console.log(user.name);
} catch (error) {
console.error("An error occurred:", error.message);
// Optionally, re-throw or handle differently
}
finallyãããã¯
finallyãããã¯ã¯ãtry...catchã¹ããŒãã¡ã³ããžã®ãªãã·ã§ã³ã®è¿œå ã§ããfinallyãããã¯å
ã®ã³ãŒãã¯ããšã©ãŒãã¹ããŒãããããã£ããããããã«é¢ããããåžžã«å®è¡ãããŸããããã¯ããããã¯ãŒã¯æ¥ç¶ã®ã¯ããŒãºããªãœãŒã¹ã®è§£æŸãç¶æ
ã®ãªã»ãããªã©ã®ã¯ãªãŒã³ã¢ããæäœã«ç¹ã«äŸ¿å©ã§ããšã©ãŒãçºçããå Žåã§ãéèŠãªã¿ã¹ã¯ãå®è¡ãããããšãä¿èšŒããŸãã
try {
let connection = establishConnection();
// Perform operations using the connection
} catch (error) {
console.error("Operation failed:", error.message);
} finally {
if (connection) {
connection.close(); // This will always run
}
console.log("Connection cleanup attempted.");
}
throwã«ããã«ã¹ã¿ã ãšã©ãŒã®ã¹ããŒ
JavaScriptã¯çµã¿èŸŒã¿ã®Errorãªããžã§ã¯ããæäŸããŠããŸãããthrowã¹ããŒãã¡ã³ãã䜿çšããŠç¬èªã®ã«ã¹ã¿ã ãšã©ãŒãäœæããã¹ããŒããããšãã§ããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ããã¹ãå
ã§æå³ã®ããç¹å®ã®ãšã©ãŒã¿ã€ããå®çŸ©ã§ãããšã©ãŒãã³ããªã³ã°ãããæ£ç¢ºã§æçãªãã®ã«ããããšãã§ããŸãã
ã«ã¹ã¿ã ãšã©ãŒãªããžã§ã¯ãã®äœæ
çµã¿èŸŒã¿ã®Errorã³ã³ã¹ãã©ã¯ã¿ãã€ã³ã¹ã¿ã³ã¹åãããããããæ¡åŒµããŠããå°éçãªãšã©ãŒã¯ã©ã¹ãäœæããããšã§ãã«ã¹ã¿ã ãšã©ãŒãªããžã§ã¯ããäœæã§ããŸãã
// Using the built-in Error constructor
throw new Error('Invalid input: User ID cannot be empty.');
// Creating a custom error class (more advanced)
class ValidationError extends Error {
constructor(message, field) {
super(message);
this.name = 'ValidationError';
this.field = field;
}
}
try {
if (!userId) {
throw new ValidationError('User ID is required.', 'userId');
}
} catch (error) {
if (error instanceof ValidationError) {
console.error(`Validation error on field '${error.field}': ${error.message}`);
} else {
console.error('An unexpected error occurred:', error.message);
}
}
ïŒäžèšã®äŸã®fieldã®ãããªïŒç¹å®ã®ããããã£ãæã€ã«ã¹ã¿ã ãšã©ãŒãäœæããããšã¯ãç¹ã«è€éãªã·ã¹ãã ããã³ãŒãããŒã¹ãžã®ç¿ç床ãç°ãªãå¯èœæ§ã®ããåœéçãªããŒã ãšå
±åäœæ¥ããå Žåã«ããšã©ãŒã¡ãã»ãŒãžã®æç¢ºããšå®è¡å¯èœæ§ã倧å¹
ã«åäžãããããšãã§ããŸãã
ã°ããŒãã«ãšã©ãŒãã³ããªã³ã°æŠç¥
ã°ããŒãã«ãªå±éãæã€ã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠãã¢ããªã±ãŒã·ã§ã³ã®ããŸããŸãªéšåãç°å¢ã«ããã£ãŠãšã©ãŒãææã管çããæŠç¥ãå®è£
ããããšãæãéèŠã§ããããã«ã¯ãåã
ã®try...catchãããã¯ãè¶
ããŠèããããšãå«ãŸããŸãã
ãã©ãŠã¶ç°å¢ã®ããã®window.onerror
ãã©ãŠã¶ããŒã¹ã®JavaScriptã§ã¯ãwindow.onerrorã€ãã³ããã³ãã©ããæªåŠçã®äŸå€ããã£ããããããã®ã°ããŒãã«ãªã¡ã«ããºã ãæäŸããŸããããã¯ãæç€ºçã«åŠçãããtry...catchãããã¯ã®å€ã§çºçããå¯èœæ§ã®ãããšã©ãŒããã°ã«èšé²ããã®ã«ç¹ã«äŸ¿å©ã§ãã
window.onerror = function(message, source, lineno, colno, error) {
console.error(`Global Error: ${message} at ${source}:${lineno}:${colno}`);
// Log the error to a remote server or monitoring service
logErrorToService(message, source, lineno, colno, error);
// Return true to prevent the default browser error handler (e.g., console logging)
return true;
};
åœéçãªãŠãŒã¶ãŒãæ±ãå Žåãwindow.onerrorã«ãã£ãŠãã°ã«èšé²ããããšã©ãŒã¡ãã»ãŒãžããç°ãªãå°åã®éçºè
ã«ãçè§£ã§ããã»ã©è©³çްã§ããããšã確èªããŠãã ãããã¹ã¿ãã¯ãã¬ãŒã¹ãå«ããããšãéèŠã§ãã
Promiseã®ããã®æªåŠçãªãžã§ã¯ã·ã§ã³ãã³ããªã³ã°
éåææäœã«åºã䜿çšãããPromiseããPromiseããªãžã§ã¯ãããã.catch()ãã³ãã©ãã¢ã¿ãããããŠããªãå ŽåãæªåŠçã®ãªãžã§ã¯ã·ã§ã³ã«ã€ãªããå¯èœæ§ããããŸããJavaScriptã¯ãããã®ããã®ã°ããŒãã«ãã³ãã©ãæäŸããŠããŸãã
window.addEventListener('unhandledrejection', function(event) {
console.error('Unhandled Promise Rejection:', event.reason);
// Log event.reason (the rejection reason)
logErrorToService('Unhandled Promise Rejection', null, null, null, event.reason);
});
ããã¯ãã°ããŒãã«ãªãªãŒãã£ãšã³ã¹ã«ãµãŒãã¹ãæäŸããWebã¢ããªã±ãŒã·ã§ã³ã§äžè¬çãªAPIåŒã³åºããªã©ã®éåææäœããã®ãšã©ãŒããã£ããããããã«äžå¯æ¬ ã§ããäŸãã°ãå¥ã®å€§éžã®ãŠãŒã¶ãŒã®ããŒã¿ãååŸããéã®ãããã¯ãŒã¯é害ã¯ããã§ãã£ããã§ããŸãã
Node.jsã®ã°ããŒãã«ãšã©ãŒãã³ããªã³ã°
Node.jsç°å¢ã§ã¯ããšã©ãŒãã³ããªã³ã°ã¯å°ãç°ãªãã¢ãããŒããåããŸããäž»èŠãªã¡ã«ããºã ã¯æ¬¡ã®ãšããã§ãã
process.on('uncaughtException', ...)ïŒwindow.onerrorãšåæ§ã«ãããã¯ã©ã®try...catchãããã¯ã§ããã£ãããããªãåæãšã©ãŒãææããŸããããããã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ãæãªãããå¯èœæ§ããããããããã«å€§ããäŸåããããšã¯äžè¬çã«æšå¥šãããŸãããã¯ãªãŒã³ã¢ãããšæ£åžžãªã·ã£ããããŠã³ã«äœ¿çšããã®ãæé©ã§ããprocess.on('unhandledRejection', ...)ïŒNode.jsã§æªåŠçã®Promiseãªãžã§ã¯ã·ã§ã³ãåŠçãããã©ãŠã¶ã®åäœãåæ ããŸãã- Event EmittersïŒå€ãã®Node.jsã¢ãžã¥ãŒã«ãã«ã¹ã¿ã ã¯ã©ã¹ã¯EventEmitterãã¿ãŒã³ã䜿çšããŠããŸãããããããçºè¡ããããšã©ãŒã¯ã
'error'ã€ãã³ããªã¹ããŒã䜿çšããŠãã£ããã§ããŸãã
// Node.js example for uncaught exceptions
process.on('uncaughtException', (err) => {
console.error('There was an uncaught error', err);
// Perform essential cleanup and then exit gracefully
// logErrorToService(err);
// process.exit(1);
});
// Node.js example for unhandled rejections
process.on('unhandledRejection', (reason, promise) => {
console.error('Unhandled Rejection at:', promise, 'reason:', reason);
// Log the rejection reason
// logErrorToService(reason);
});
ã°ããŒãã«ãªNode.jsã¢ããªã±ãŒã·ã§ã³ã§ã¯ããããã®æªææã®äŸå€ãæªåŠçã®ãªãžã§ã¯ã·ã§ã³ãå ç¢ã«ãã®ã³ã°ããããšããããŸããŸãªå°ççãªå Žæããããã¯ãŒã¯æ§æããçºçããåé¡ãç¹å®ã蚺æããããã«éèŠã§ãã
ã°ããŒãã«ãšã©ãŒç®¡çã®ãã¹ããã©ã¯ãã£ã¹
ãããã®ãã¹ããã©ã¯ãã£ã¹ãæ¡çšããããšã§ãã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã®JavaScriptã¢ããªã±ãŒã·ã§ã³ã®å埩åãšä¿å®æ§ãå€§å¹ ã«åäžããŸãã
- ãšã©ãŒã¡ãã»ãŒãžãå
·äœçã«ããïŒããšã©ãŒãçºçããŸãããã®ãããªææ§ãªãšã©ãŒã¡ãã»ãŒãžã¯åœ¹ã«ç«ã¡ãŸãããäœãããªãééã£ãŠããã®ãããããŠãŠãŒã¶ãŒãéçºè
ãããã«å¯ŸããŠäœãã§ãããã«ã€ããŠã®ã³ã³ããã¹ããæäŸããŠãã ãããåœéçãªããŒã ã®ããã«ãã¡ãã»ãŒãžãæç¢ºã§ææ§ãããªãããšã確èªããŠãã ããã
// Instead of: // throw new Error('Failed'); // Use: throw new Error(`Failed to fetch user data from API endpoint '/users/${userId}'. Status: ${response.status}`); - ãšã©ãŒã广çã«ãã°ã«èšé²ããïŒå
ç¢ãªãã®ã³ã°æŠç¥ãå®è£
ããŸããå°çšã®ãã®ã³ã°ã©ã€ãã©ãªïŒäŸïŒNode.jsçšã®WinstonããŸãã¯ããã³ããšã³ãã¢ããªã±ãŒã·ã§ã³çšã®SentryãDatadogãLogRocketãªã©ã®ãµãŒãã¹ãšã®çµ±åïŒã䜿çšããŸããéäžãã®ã³ã°ã¯ã倿§ãªãŠãŒã¶ãŒããŒã¹ãç°å¢ã«ãããåé¡ãç£èŠããããã®éµã§ãããã°ãæ€çŽ¢å¯èœã§ãååãªã³ã³ããã¹ãïŒãŠãŒã¶ãŒIDãã¿ã€ã ã¹ã¿ã³ããç°å¢ãã¹ã¿ãã¯ãã¬ãŒã¹ïŒãå«ãã§ããããšã確èªããŠãã ããã
äŸïŒæ±äº¬ã®ãŠãŒã¶ãŒãæ¯æãåŠçãšã©ãŒãçµéšããå Žåããã°ã«ã¯ãšã©ãŒããŠãŒã¶ãŒã®å ŽæïŒå©çšå¯èœã§ãã©ã€ãã·ãŒèŠå¶ã«æºæ ããŠããå ŽåïŒã圌ããè¡ã£ãŠããã¢ã¯ã·ã§ã³ãããã³é¢äžããã·ã¹ãã ã³ã³ããŒãã³ããæç¢ºã«ç€ºãããã¹ãã§ãã
- ã°ã¬ã€ã¹ãã«ãã°ã©ããŒã·ã§ã³ïŒåªé
ãªçž®éïŒïŒç¹å®ã®ã³ã³ããŒãã³ãããµãŒãã¹ã倱æããå Žåã§ããã¢ããªã±ãŒã·ã§ã³ãïŒããããæ©èœãå¶éãããç¶æ
ã§ïŒæ©èœããããã«èšèšããŸããäŸãã°ãçºæ¿ã¬ãŒãã衚瀺ããããã®ãµãŒãããŒãã£ãµãŒãã¹ãããŠã³ããå Žåã§ããã¢ããªã±ãŒã·ã§ã³ã¯ä»ã®ã³ã¢ã¿ã¹ã¯ã§æ©èœãç¶ããã¹ãã§ãããããããã©ã«ãã®é貚ã§äŸ¡æ Œã衚瀺ããããããŒã¿ãå©çšã§ããªãããšã瀺ãããããŸãã
äŸïŒæ è¡äºçŽãµã€ãã¯ãçºæ¿ã¬ãŒãAPIã倱æããå Žåã«ãªã¢ã«ã¿ã€ã é貚æç®æ©èœãç¡å¹ã«ãããããããŸãããããŠãŒã¶ãŒãåºæ¬é貚ã§ãã©ã€ããé²èЧããã³äºçŽããããšã¯åŒãç¶ãèš±å¯ããŸãã
- ãŠãŒã¶ãŒãã¬ã³ããªãŒãªãšã©ãŒã¡ãã»ãŒãžïŒãŠãŒã¶ãŒåãã®ãšã©ãŒã¡ãã»ãŒãžããŠãŒã¶ãŒã®åžæããèšèªã«ç¿»èš³ããŸããå°éçšèªã¯é¿ããŠãã ãããæ¬¡ã«é²ãããã®æç¢ºãªæç€ºãæäŸããŸãããŠãŒã¶ãŒã«ã¯äžè¬çãªã¡ãã»ãŒãžã衚瀺ããéçºè
åãã«ã¯è©³çŽ°ãªæè¡çãšã©ãŒããã°ã«èšé²ããããšãæ€èšããŠãã ããã
äŸïŒãã©ãžã«ã®ãŠãŒã¶ãŒã«ã
TypeError: Cannot read properties of undefined (reading 'country')ããšè¡šç€ºãã代ããã«ããã客æ§ã®äœçœ®æ å ±ã®èªã¿èŸŒã¿äžã«åé¡ãçºçããŸãããåŸã§ããäžåºŠã詊ããã ãããããšè¡šç€ºãããµããŒãããŒã åãã«è©³çްãªãšã©ãŒããã°ã«èšé²ããŸãã - ãšã©ãŒãã³ããªã³ã°ã®éäžåïŒå€§èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã³ãŒãããŒã¹å šäœã§äžè²«ããŠãšã©ãŒãã€ã³ã¿ãŒã»ããã管çã§ãããéäžåããããšã©ãŒãã³ããªã³ã°ã¢ãžã¥ãŒã«ãŸãã¯ãµãŒãã¹ãæ€èšããŸããããã«ãããçµ±äžæ§ãä¿é²ããããšã©ãŒãã³ããªã³ã°ããžãã¯ã®æŽæ°ã容æã«ãªããŸãã
- éå°ãªãã£ãããé¿ããïŒæ¬åœã«åŠçã§ãããšã©ãŒããŸãã¯ç¹å®ã®ã¯ãªãŒã³ã¢ãããå¿ èŠãªãšã©ãŒã®ã¿ããã£ããããŸããããŸãã«ãåºç¯å²ã«ãã£ãããããšãæ ¹æ¬çãªåé¡ãé èœããããããã°ãå°é£ã«ãªãå¯èœæ§ããããŸããäºæããªããšã©ãŒã¯ã°ããŒãã«ãã³ãã©ã«ããã«ã¢ãããããããéçºç°å¢ã§ã¯ããã»ã¹ãã¯ã©ãã·ã¥ãããŠããããã察åŠãããããã«ããŸãã
- ãªã³ã¿ãŒãšéçè§£æã䜿çšããïŒESLintã®ãããªããŒã«ã¯ãæœåšçã«ãšã©ãŒãåŒãèµ·ããããããã¿ãŒã³ãç¹å®ããäžè²«ããã³ãŒãã£ã³ã°ã¹ã¿ã€ã«ã匷å¶ããã®ã«åœ¹ç«ã¡ããããããšã©ãŒãå°å ¥ããå¯èœæ§ãæžãããŸããå€ãã®ãªã³ã¿ãŒã«ã¯ããšã©ãŒãã³ããªã³ã°ã®ãã¹ããã©ã¯ãã£ã¹ã«é¢ããç¹å®ã®ã«ãŒã«ããããŸãã
- ãšã©ãŒã·ããªãªããã¹ãããïŒãšã©ãŒãã³ããªã³ã°ããžãã¯ã®ãã¹ããç©æ¥µçã«èšè¿°ããŸãããšã©ãŒæ¡ä»¶ïŒäŸïŒãããã¯ãŒã¯é害ãç¡å¹ãªããŒã¿ïŒãã·ãã¥ã¬ãŒãããŠã
try...catchãããã¯ãšã°ããŒãã«ãã³ãã©ãæåŸ ã©ããã«æ©èœããããšã確èªããŸããããã¯ããŠãŒã¶ãŒã®å Žæã«é¢ä¿ãªããã¢ããªã±ãŒã·ã§ã³ãéå®³ç¶æ ã§äºæž¬ã©ããã«åäœããããšãæ€èšŒããããã«éèŠã§ãã - ç°å¢åºæã®ãšã©ãŒãã³ããªã³ã°ïŒéçºãã¹ããŒãžã³ã°ãæ¬çªç°å¢ã§ç°ãªããšã©ãŒãã³ããªã³ã°æŠç¥ãå®è£ ããŸããéçºç°å¢ã§ã¯ããã詳现ãªãã®ã³ã°ãšå³æã®ãã£ãŒãããã¯ãå¿ èŠãããããŸãããæ¬çªç°å¢ã§ã¯ãã°ã¬ã€ã¹ãã«ãã°ã©ããŒã·ã§ã³ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãå ç¢ãªãªã¢ãŒããã®ã³ã°ãåªå ããŸãã
é«åºŠãªäŸå€ç®¡çãã¯ããã¯
ã¢ããªã±ãŒã·ã§ã³ãè€éã«ãªãã«ã€ããŠãããé«åºŠãªãã¯ããã¯ãæ¢æ±ãããããããŸããã
- ãšã©ãŒããŠã³ããªïŒReactïŒïŒReactã¢ããªã±ãŒã·ã§ã³ã§ã¯ããšã©ãŒããŠã³ããªã¯ãåã³ã³ããŒãã³ãããªãŒã®ã©ãã§ã§ãJavaScriptãšã©ãŒããã£ãããããããã®ãšã©ãŒããã°ã«èšé²ããã³ã³ããŒãã³ãããªãŒå
šäœãã¯ã©ãã·ã¥ãã代ããã«ãã©ãŒã«ããã¯UIã衚瀺ã§ããæŠå¿µã§ããããã¯UIã®é害ãåé¢ãã匷åãªæ¹æ³ã§ãã
// Example of a React Error Boundary component class ErrorBoundary extends React.Component { constructor(props) { super(props); this.state = { hasError: false }; } static getDerivedStateFromError(error) { // Update state so the next render will show the fallback UI. return { hasError: true }; } componentDidCatch(error, errorInfo) { // You can also log the error to an error reporting service logErrorToService(error, errorInfo); } render() { if (this.state.hasError) { // You can render any custom fallback UI returnSomething went wrong.
; } return this.props.children; } } - éäžåãããFetch/APIã©ãããŒïŒAPIãªã¯ãšã¹ããè¡ãããã®åå©çšå¯èœãªé¢æ°ãã¯ã©ã¹ãäœæããŸãããããã®ã©ãããŒã«ã¯ããããã¯ãŒã¯ãšã©ãŒãã¬ã¹ãã³ã¹ã®æ€èšŒããã¹ãŠã®APIã€ã³ã¿ã©ã¯ã·ã§ã³ã«å¯Ÿããäžè²«ãããšã©ãŒå ±åãåŠçããããã®çµã¿èŸŒã¿ã®
try...catchãããã¯ãå«ããããšãã§ããŸããasync function fetchData(url) { try { const response = await fetch(url); if (!response.ok) { // Handle HTTP errors like 404, 500 throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); return data; } catch (error) { console.error(`Error fetching data from ${url}:`, error); // Log to service throw error; // Re-throw to allow higher-level handling } } - éåæã¿ã¹ã¯ã®ããã®ç£èŠä»ããã¥ãŒïŒããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ãéèŠãªéåææäœã«ã¯ãçµã¿èŸŒã¿ã®ãªãã©ã€ã¡ã«ããºã ãšãšã©ãŒç£èŠãåããã¡ãã»ãŒãžãã¥ãŒãã¿ã¹ã¯ã¹ã±ãžã¥ãŒã©ã®äœ¿çšãæ€èšããŸããããã«ãããã¿ã¹ã¯ãäžæçã«å€±æããŠãå詊è¡ã§ãã倱æã广çã«è¿œè·¡ãããããšãä¿èšŒãããŸãã
çµè«ïŒå埩åã®ããJavaScriptã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯
广çãªJavaScriptã®ãšã©ãŒãã³ããªã³ã°ã¯ãäºæž¬ãæ€åºããããŠåªé
ãªå埩ã®ç¶ç¶çãªããã»ã¹ã§ãããã®ã¬ã€ãã§æŠèª¬ãããæŠç¥ãšãã¹ããã©ã¯ãã£ã¹ïŒtry...catchãšthrowã®ç¿åŸãããã°ããŒãã«ãšã©ãŒãã³ããªã³ã°ã¡ã«ããºã ã®æ¡çšãé«åºŠãªãã¯ããã¯ã®æŽ»çšãŸã§ïŒãå®è£
ããããšã§ãã¢ããªã±ãŒã·ã§ã³ã®ä¿¡é Œæ§ãå®å®æ§ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã倧å¹
ã«åäžãããããšãã§ããŸããã°ããŒãã«ãªèŠæš¡ã§äœæ¥ããéçºè
ã«ãšã£ãŠããã®å
ç¢ãªãšã©ãŒç®¡çãžã®ã³ãããã¡ã³ãã¯ããœãããŠã§ã¢ã倿§ãªç°å¢ãšãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ã®è€éãã«èããä¿¡é Œãè²ã¿ãäžçäžã§äžè²«ãã䟡å€ãæäŸããããšãä¿èšŒããŸãã
ç®æšã¯ãã¹ãŠã®ãšã©ãŒããªããããšã§ã¯ãªãïŒäžéšã¯é¿ããããªãããïŒãããããã€ã³ããªãžã§ã³ãã«ç®¡çãããã®åœ±é¿ãæå°éã«æããããããåŠãã§ããè¯ããããå埩åã®ãããœãããŠã§ã¢ãæ§ç¯ããããšã§ããããšãå¿ããªãã§ãã ããã